1. Field of the Invention
The present invention generally relates to a system for testing computer programs, and, in particular, to a network distributed automated testing system.
2. Description of the Related Art
As application programs become more complex, there is a need for automated systems to test the application programs before they are released to end users. One technique is to develop one or more test scripts that automate the testing process, wherein the test script stores a series of commands to be executed by the application program to avoid having an operator enter a series of commands. This approach is used because a computer can execute a test script somewhat faster than an operator manually entering the commands, and can do so unattended, freeing the operator for other tasks. Existing software quality assurance (QA) tools such as Segue's Quality Works/QA Partner and Microsoft's Visual Test support the creation and use of scripts for software testing, thereby considerably reducing the operator time required relative to manual testing.
Computer processing time is far cheaper and exists in much greater surplus than human operator time. Therefore, software testing is effectively limited by the amount of operator intervention required per test. Even with automation, there are a number of steps that must be taken by an operator. Even though creation and execution of tests may be automated, the operator must review the results of the execution, correlate the results from multiple machines, document any errors or defects, debug the application program and/or the test script itself, and/or re-execute the test script. These manual efforts are time consuming and costly.
In large-scale use of such automated testing, most users of these tools find it necessary to manually divide their tests into batches, run the batches in parallel on different machines and then manually combine the results. These operations create a significant additional operator overhead for automated testing. Since there is a fixed overhead per machine, this style of testing discourages making testing faster or more comprehensive by using many machines, because the rapidly increasing overhead quickly causes diminishing returns. Further, this style of testing is poorly suited for tests that are randomly or automatically generated, since the division of tests into batches must be done before each testing session instead of just once, further increasing the overhead.
Thus, there is a need in the art for techniques that increase testing efficiency by solving these problems. The present invention solves these problems using a server computer as a central repository for all tests and results, wherein the server computer is connected to any number of client computers that perform the tests.